from pydantic import Field, field_validator

from .base import Base
from .resume_id import ResumeSkillId


class BaseResumeSkill(Base):
    skills: list[str] = Field(..., description='Ключевые навыки')

    @field_validator('skills')
    @classmethod
    def check_skills(cls, skills: list[str]) -> list[str]:
        if len(skills) == 0:
            raise ValueError('Ключевые навыки отсутствуют!')
        return skills


class ResumeSkillCreate(BaseResumeSkill):
    pass


class ResumeSkillResult(BaseResumeSkill):
    id: ResumeSkillId = Field(..., description='Уникальный индентификатор')


class ResumeSkillUpdate(BaseResumeSkill):
    skills: list[str] | None = Field(None, description='Ключевые навыки')

    @field_validator('skills')
    @classmethod
    def check_skills(cls, skills: list[str] | None) -> list[str] | None:
        if skills is None:
            return skills
        return super().check_skills(skills)
